JSの this. はコンパイラや静的解析に易しくない
#(Type|ECMA|Java)Script #プログラミング #コンパイラ
from React Forget
---
TODO
どういう理由でそうなっているか理解があやふやなのでReact Forgetのコードを読んだほうが良さそう
Finite State Machine(FSM)との関連
---
GitHub Copilotやその他の支援技術に乗っかっていく上でかなり大事っぽいkoushisa.icon
なるべく中間状態を廃した方が良い
コンパイラに優しいコードはImmutable Model
状態遷移は漸化式にできないかを考える
---
型をどう考えるか?
型でドメインを構築できてるかが一番大事
型システムはデータ変換や多様性を正確に表現できる
クラスベースのDDDはReactのImmutable Modelと相性が悪い
---
静的解析の話で、Svelteとかを思い出した
ランタイムでコードを最適化してくれるような機構を持ってるやつ
トレードオフで、「コンパイラの気持ちになってコードを書かないといけない」というのはある
コードの見た目上はokなはずなのに画面上ではなぜかダメってのが起こりうる
ビルドは通るけど期待通りに動かない
関連
デバッグや動かしてログを見るとかしないと実際の挙動はわからない
SvelteはReactの1.6倍のスピードでバンドルサイズが成長していく
$~が裏で何をしているかを知らないと、規約を守るのが難しい
エディタ上でコンパイラの規約を守るルールを遵守するLintみたいなやつがないと困る
Rustはその辺うまくやってるっぽい
Reactの場合、この点はユーザーに学習させる方式にしている
Reactの学習ハードルの高さ
Reactでメモ化する前に考えるべきことがある
---
Signal系とか(Qwik, Solid.js)、mutableを前提としたライブラリは全体的に同じ課題を抱えてそう
というか、何らかのテンプレートエンジンやDSLを扱う技術全てに言える?
柔軟性とのトレードオフ
各自、ここに対する課題感はどんなもんなんだろう
JSを減らすという気持ちはわかる
---
「問題」と「課題感」と「解ける課題」は別物